package editorsvg.editor.formas;

import editorsvg.propiedades.GrupoPropiedades;
import editorsvg.propiedades.PropiedadNumericaReal;
import java.awt.Shape;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;

/**
 *
 * @author Jorge Berjano
 */
public class Linea extends Forma {
    
    private Double x1;
    private Double y1;
    private Double x2;
    private Double y2;
    private Line2D linea = new Line2D.Double();

    @Override
    public String getNombreTag() {
        return "line";
    }
    
    @Override
    public Shape getShape() {
        return linea;
    }

    @Override
    public void actualizar() {
        if (x1 == null || y1 == null || x2 == null || y2 == null) {
            return;
        }
        linea.setLine(x1, y1, x2, y2);
    }

    @Override
    public GrupoPropiedades obtenerPropiedades() {
        GrupoPropiedades grupo = new GrupoPropiedades("Linea");
        grupo.agregarPropiedad(new PropiedadNumericaReal(this, "x1"));
        grupo.agregarPropiedad(new PropiedadNumericaReal(this, "x1"));
        grupo.agregarPropiedad(new PropiedadNumericaReal(this, "x2"));
        grupo.agregarPropiedad(new PropiedadNumericaReal(this, "x2"));
        return grupo;
    }

    public Point2D getPosicion1() {
        if (x1 == null || y1 == null) {
            return null;
        } else {
            return new Point2D.Double(x1, y1);
        }
    }
    
    public Point2D getPosicion2() {
        if (x2 == null || y2 == null) {
            return null;
        } else {
            return new Point2D.Double(x2, y2);
        }
    }
    
    public void setPosicion1(Point2D posicion) {
        x1 = posicion.getX();
        y1 = posicion.getY();
    }
    
    public void setPosicion2(Point2D posicion) {
        x2 = posicion.getX();
        y2 = posicion.getY();
    }

    public Double getX1() {
        return x1;
    }

    public void setX1(Double x1) {
        this.x1 = x1;
    }

    public Double getX2() {
        return x2;
    }

    public void setX2(Double x2) {
        this.x2 = x2;
    }

    public Double getY1() {
        return y1;
    }

    public void setY1(Double y1) {
        this.y1 = y1;
    }

    public Double getY2() {
        return y2;
    }

    public void setY2(Double y2) {
        this.y2 = y2;
    }
}
